package eu.runelord.programmers.t142186;

public class App {

	private static Class<?> a = null;
	private static I i;

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// chcemy załadować i użyć A o ile istnieje
		try {
			a = Class.forName("eu.runelord.programmers.t142186.A");
		} catch (ClassNotFoundException e) {
			// A nie istnieje!
			a = null;
		}
		if (a != null) {
			// jak poleci błąd to znaczy, że spartoliliśmy coś naprawdę nieźle
			try {
				i = (I) a.newInstance();
			} catch (InstantiationException e) {
				e.printStackTrace();
			} catch (IllegalAccessException e) {
				e.printStackTrace();
			}
		}
		else{
			// nie ma A, ale jakoże mamy nasz NullObj to:
			i = new NullObj();
		}
		i.m();
	}

}

interface I {
	public void m();
}
/*
class A implements I {
	public void m() {
		System.out.println("A");
	}
}
*/
class NullObj implements I {
	public void m() {
		System.out.println("NULL Stub");
	}
}
